package com.cya.lotterysystem.service.impl;

import com.cya.lotterysystem.common.errcode.ServiceErrorCodeConstans;
import com.cya.lotterysystem.common.exception.ServiceException;
import com.cya.lotterysystem.common.utils.CaptchUtil;
import com.cya.lotterysystem.common.utils.RedisUtil;
import com.cya.lotterysystem.common.utils.RegexUtil;
import com.cya.lotterysystem.service.VerificationCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author ：陈奕安（3048279304@qq.com）
 * @date ：Created in 2025/10/29 16:47
 * @description：
 * @modified By：
 * @version:
 */
@Service
public class VerificationCodeServiceImpl implements VerificationCodeService {

//    对于redis里的key需要标准化，

    private static final  String VERIFICATION_CODE_PREFIX="VERIFICATION_CODE";

    private static  final Long VERIFICATION_CODE_TOMEOUT=60l;


    @Autowired
    private RedisUtil redisUtil;

    @Override
    public void sendVerificationCode(String phoneNumber) {
//        校验手机号
        if (!RegexUtil.checkMobile(phoneNumber)){
            throw new ServiceException(ServiceErrorCodeConstans.PHONE_ERRROR);
        }
//        生成随机验证码
        String code= CaptchUtil.getCaptcha(4);
//        发送验证码

//        缓存验证码
        redisUtil.set(VERIFICATION_CODE_PREFIX+phoneNumber,code,VERIFICATION_CODE_TOMEOUT);


    }

    @Override
    public String getVerificationCode(String phoneNumber) {
//      校验手机号
        if (!RegexUtil.checkMobile(phoneNumber)){
            throw new ServiceException(ServiceErrorCodeConstans.PHONE_ERRROR);
        }
      return   redisUtil.get(VERIFICATION_CODE_PREFIX+phoneNumber);


    }
}